# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Compute.V1.Model.StoragePoolType do
  @moduledoc """


  ## Attributes

  *   `creationTimestamp` (*type:* `String.t`, *default:* `nil`) - [Output Only] Creation timestamp in RFC3339 text format.
  *   `deprecated` (*type:* `GoogleApi.Compute.V1.Model.DeprecationStatus.t`, *default:* `nil`) - [Output Only] The deprecation status associated with this storage pool type.
  *   `description` (*type:* `String.t`, *default:* `nil`) - [Output Only] An optional description of this resource.
  *   `id` (*type:* `String.t`, *default:* `nil`) - [Output Only] The unique identifier for the resource. This identifier is defined by the server.
  *   `kind` (*type:* `String.t`, *default:* `compute#storagePoolType`) - [Output Only] Type of the resource. Always compute#storagePoolType for storage pool types.
  *   `maxPoolProvisionedCapacityGb` (*type:* `String.t`, *default:* `nil`) - [Output Only] Maximum storage pool size in GB.
  *   `maxPoolProvisionedIops` (*type:* `String.t`, *default:* `nil`) - [Output Only] Maximum provisioned IOPS.
  *   `maxPoolProvisionedThroughput` (*type:* `String.t`, *default:* `nil`) - [Output Only] Maximum provisioned throughput.
  *   `minPoolProvisionedCapacityGb` (*type:* `String.t`, *default:* `nil`) - [Output Only] Minimum storage pool size in GB.
  *   `minPoolProvisionedIops` (*type:* `String.t`, *default:* `nil`) - [Output Only] Minimum provisioned IOPS.
  *   `minPoolProvisionedThroughput` (*type:* `String.t`, *default:* `nil`) - [Output Only] Minimum provisioned throughput.
  *   `minSizeGb` (*type:* `String.t`, *default:* `nil`) - [Deprecated] This field is deprecated. Use minPoolProvisionedCapacityGb instead.
  *   `name` (*type:* `String.t`, *default:* `nil`) - [Output Only] Name of the resource.
  *   `selfLink` (*type:* `String.t`, *default:* `nil`) - [Output Only] Server-defined URL for the resource.
  *   `selfLinkWithId` (*type:* `String.t`, *default:* `nil`) - [Output Only] Server-defined URL for this resource with the resource id.
  *   `supportedDiskTypes` (*type:* `list(String.t)`, *default:* `nil`) - [Output Only] The list of disk types supported in this storage pool type.
  *   `zone` (*type:* `String.t`, *default:* `nil`) - [Output Only] URL of the zone where the storage pool type resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :creationTimestamp => String.t() | nil,
          :deprecated => GoogleApi.Compute.V1.Model.DeprecationStatus.t() | nil,
          :description => String.t() | nil,
          :id => String.t() | nil,
          :kind => String.t() | nil,
          :maxPoolProvisionedCapacityGb => String.t() | nil,
          :maxPoolProvisionedIops => String.t() | nil,
          :maxPoolProvisionedThroughput => String.t() | nil,
          :minPoolProvisionedCapacityGb => String.t() | nil,
          :minPoolProvisionedIops => String.t() | nil,
          :minPoolProvisionedThroughput => String.t() | nil,
          :minSizeGb => String.t() | nil,
          :name => String.t() | nil,
          :selfLink => String.t() | nil,
          :selfLinkWithId => String.t() | nil,
          :supportedDiskTypes => list(String.t()) | nil,
          :zone => String.t() | nil
        }

  field(:creationTimestamp)
  field(:deprecated, as: GoogleApi.Compute.V1.Model.DeprecationStatus)
  field(:description)
  field(:id)
  field(:kind)
  field(:maxPoolProvisionedCapacityGb)
  field(:maxPoolProvisionedIops)
  field(:maxPoolProvisionedThroughput)
  field(:minPoolProvisionedCapacityGb)
  field(:minPoolProvisionedIops)
  field(:minPoolProvisionedThroughput)
  field(:minSizeGb)
  field(:name)
  field(:selfLink)
  field(:selfLinkWithId)
  field(:supportedDiskTypes, type: :list)
  field(:zone)
end

defimpl Poison.Decoder, for: GoogleApi.Compute.V1.Model.StoragePoolType do
  def decode(value, options) do
    GoogleApi.Compute.V1.Model.StoragePoolType.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Compute.V1.Model.StoragePoolType do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
